草庐IT

ruby module_function 与包含模块

全部标签

ruby - 如何访问 Ruby 模块方法

我有一个用于常量的Ruby模块。它有一个变量列表和一个应用格式的方法。我似乎无法访问此模块中的方法。知道为什么吗? 最佳答案 如果您include模块,该方法成为实例方法,但如果您扩展模块,则它成为类方法.moduleConstdefformatputs'Done!'endendclassCarincludeConstendCar.new.format#Done!Car.format#NoMethodError:undefinedmethodformatforCar:ClassclassBusextendConstendBus.fo

ruby - 有没有办法用 Rspec stub 包含模块的方法?

我有一个模块包含在另一个模块中,它们都实现了相同的方法。我想stub包含模块的方法,如下所示:moduleMdeffoo:MendendmoduleAclass第一个测试通过,但第二个输出:Failure/Error:expect(A.foo).toeq:barexpected::bargot::M为什么stub在这种情况下不起作用?有没有不同的方法来实现这一目标?谢谢!------------------------------------更新----------------------------------谢谢!使用allow_any_instance_of(M)解决了这个问题。

ruby - 码和文档中类/模块的链接

我目前正在从rdoc切换到yard以获取我的ruby​​软件文档。在我的文档中,我经常从评论中引用一些类/模块,例如:##==Providesvariousutilityfeatures####==Features####Logging:loggingisprovidedbytheMysoft::Mypackage::Utility::Loggerclass##Rdoc正确地创建了指向Mysoft::Mypackage::Utility::Logger类文档页面的链接,而yard忽略了标记并将类名视为简单字符串。我知道yard有@see标签,但是这会在文档中创建一个单独的“另见”部分,

ruby-on-rails - Rails 3 在使用查找时验证包含(如何处理或 lambda)

我有一个项目,其中有一个CURRENCY和COUNTRY表。有一个PRICE模型需要有效的货币和国家代码,所以我有以下验证:validates:currency_code,:presence=>true,:inclusion=>{:in=>Currency.all_codes}validates:country_code,:presence=>true,:inclusion=>{:in=>Country.all_codes}all_codes方法返回一个仅包含货币或国家代码的数组。这有效只要没有代码添加到表中就可以。您将如何编写此代码以使Currency.all_codes的结果是Pr

ruby-on-rails - Ruby(和 Rails)嵌套模块语法

我想知道下面两个模块有什么区别#FirstExamplemoduleParentmoduleChildendend和#SecondExamplemoduleParent::Childend使用第二种方法,似乎必须预先定义父模块,否则会出现“未初始化常量”错误鉴于此,定义此类模块的首选方法是什么,然后根据语法和文件结构(即文件夹等)添加嵌套子项。非常感谢引用Rails方式。这两个示例的所有意图和目的是否相同? 最佳答案 在第一个示例中,它定义了Parent模块,然后是Child模块。正如您自己所说,第二个示例必须预先定义Parent模

ruby - "RVM is not a function"错误

RVM已正确安装在我的机器上(运行MacOSX10.6.8)并且运行良好。奇怪的是,要运行它,我必须为每个新session使用source~/.rvm/scripts/rvm。我尝试从它创建一个符号链接(symboliclink)到/opt/local/bin/rvm,但是当它运行时它什么也不做。我还尝试创建一个从~/.rvm/bin/rvm到/opt/local/bin/rvm的符号链接(symboliclink),当我运行rvm在终端中,它会按预期显示帮助页面。但是当我尝试rvmusesome_ruby_version时,它总是显示“RVM不是一个函数,选择带有‘rvmuse...

ruby-on-rails - Rails 将验证放在模块混合中?

一些验证在我的模型中是重复的:validates:name,:length=>{:minimum=>2},:presence=>true,:uniqueness=>truevalidates:name_seo,:length=>{:minimum=>2},:presence=>true,:uniqueness=>true我如何将其放入混音中?如果我只是将它们放入mixin中,我会收到此错误app/models/validations.rb:5:undefinedmethod`validates'forValidations:Module(NoMethodError)

ruby - 确定字符串数组是否包含 ruby​​ 中的某个子字符串

我有一个简单的ruby​​问题。我有一个字符串数组。我想确定该数组是否包含任何字符串的子字符串。举个例子a=['cat','dog','elephant']a.to_s.include?('ele')这是最好的方法吗?谢谢。 最佳答案 a.any?应该可以完成这项工作。>a=['cat','dog','elephant']=>["cat","dog","elephant"]>a.any?{|s|s.include?('ele')}=>true>a.any?{|s|s.include?('nope')}=>false

ruby - 在 Ruby 中是否有打开包含下划线的 URL 的解决方法?

我正在使用open-uri打开URL。resp=open("http://sub_domain.domain.com")如果它包含下划线,我会得到一个错误:URI::InvalidURIError:theschemehttpdoesnotacceptregistrypart:sub_domain.domain.com(orbadhostname?)据我所知,这是因为根据RFC,URL只能包含字母和数字。有什么解决方法吗? 最佳答案 这看起来像是URI中的错误,而uri-open、HTTParty和许多其他gem都使用了URI.par

Ruby 模块 - 包含 do end block

有一个模块MyModule:moduleMyModuleextendActiveSupport::Concerndeffirst_methodenddefsecond_methodendincludeddosecond_class_methodendmoduleClassMethodsdeffirst_class_methodenddefsecond_class_methodendendend当某些类包含这个模块时,它将有2个方法公开为实例方法(first_method和second_method)和2个类方法(first_class_method和second_class_metho